package uoc.ei.practica;

import uoc.ei.tads.Iterador;
import uoc.ei.tads.IteradorVectorImpl;

/**
 * Clase que representa un Jugador en el sistema
 *
 */
public class Player {
	/**
	 * fichas del jugador
	 */
	private Card[] cards;
	private int pCards; 
	private String nif;
	
	/**
	 * nombre del jugador
	 */
	private String name;
	private int puntos;
	
	public Player(String nif, String name) {
		this.name=name;
		this.cards=new Card[ScrabbleManager.MAX_CARDS_USER];
		this.pCards=0;
		this.nif=nif;
	}

	
	/**
	 * método que añade una ficha a un jugador.
	 * @param card la ficha a añadir.
	 */
	public void addCard(Card card) throws EIException {
		if (pCards>=ScrabbleManager.MAX_CARDS_USER) throw new EIException(Messages.MAX_CARDS);
		this.cards[this.pCards++]=card;
		card.addPlayer(this);
	}

	public Iterador<Card> cards() {
		return  new IteradorVectorImpl(this.cards,this.pCards,0);
	}

	public String getName() {
		return this.name;
	}

	public boolean is(String playerId) {
		return this.nif.equals(playerId);
	}


	public int getPuntos() {
		return puntos;
	}


	public void setPuntos(int puntos) {
		this.puntos = puntos;
	}
	
	public String toString() {
		StringBuffer sb=new StringBuffer();
		sb.append(this.nif+" ").append(this.name+" ").append("points: ").append(this.puntos);
		return sb.toString();
	}


	public void setName(String name) {
		this.name=name;
		
	}
	public String getNif() {
		return this.nif;
		
	}	
	
	public Card[] playerCards()
	{
			return this.cards;
	}
	public Card playerCards(int i)
	{
			return this.cards[i];
	}
	
	public void popCard(Card c)
	{
		cards[pCards-1]=c;
	}
	
	public void changeCard(Card c, int i)
	{
		cards[i]=c;
	}

}
